package com.eliaukjq.xunlianying;

/**
 * @Author : 佩萁
 * Description :
 * @Create : 2024/7/9 - 16:46
 */
/**
 * SynchronizedObject03 类实现了 Runnable 接口，用于演示静态同步方法的线程同步效果。
 */
public class SynchronizedObject03 implements Runnable {

    /**
     * run 方法是线程的执行体，它会调用 method 方法。
     */
    @Override
    public void run() {
        method();
    }

    /**
     * 静态同步方法，用于模拟需要线程同步的场景。
     * 在这个方法中，线程会打印开始信息，然后休眠2秒，最后打印结束信息。
     * 使用 synchronized 关键字确保了在同一时间只有一个线程可以执行这个方法。
     */
    public /*static*/ synchronized void method() {
        System.out.println("线程" + Thread.currentThread().getName() + "开始");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程" + Thread.currentThread().getName() + "结束");
    }

    /**
     * 程序的入口点。
     * 在这里创建了两个线程，分别使用了 SynchronizedObject03 的两个实例作为目标对象。
     * 由于 method 方法是静态同步方法，因此这两个线程会按顺序执行 method 方法。
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        SynchronizedObject03 instance1 = new SynchronizedObject03();
        SynchronizedObject03 instance2 = new SynchronizedObject03();
        Thread t1 = new Thread(instance1);
        Thread t2 = new Thread(instance2);
        t1.start();
        t2.start();
    }
}
